home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
ada
/
gwuada_9.zip
/
PREDEF.ADA
< prev
next >
Wrap
Text File
|
1992-02-07
|
25KB
|
750 lines
--
--
-- **********************************
-- * *
-- * T e x t *
-- * *
-- * Input / Output Package *
-- * *
-- * and other *
-- * *
-- * Predefined Units *
-- * *
-- * *
-- * ADA Project *
-- * Courant Institute *
-- * New York University *
-- * 251 Mercer Street, *
-- * New York, NY 10012 *
-- * *
-- **********************************
--
--
--
pragma page;
-- This file contains several of the predefined Ada package spec-
-- ifications. They do not actually implement the package's
-- operations, which are coded in the implementation language C,
-- but they provide an interface to them through the standard
-- procedure/function calling mechanism. The predefined packages are:
--
-- . The SYSTEM package.
--
-- . The IO_EXCEPTIONS package.
--
-- . The generic SEQUENTIAL_IO package.
--
-- . The generic DIRECT_IO package.
--
-- . The TEXT_IO package.
--
-- . The CALENDAR package and the predefined subprograms
-- UNCHECKED_CONVERSION and UNCHECKED_DEALLOCATION.
--
--
pragma page;
package SYSTEM is
type NAME is (ELXSI_BSD, ELXSI_ENIX, PC_DOS,
SUN_UNIX, VAX_UNIX, VAX_VMS) ;
SYSTEM_NAME : constant NAME := SUN_UNIX;
STORAGE_UNIT : constant := 32;
MEMORY_SIZE : constant := 2**16 - 1;
-- System Dependent Named Numbers:
MIN_INT : constant := -2**31;
MAX_INT : constant := 2**31-1;
MAX_DIGITS : constant := 6;
MAX_MANTISSA : constant := 31;
FINE_DELTA : constant := 2.0**(-30);
TICK : constant := 0.01;
-- Other System Dependent Declarations
subtype PRIORITY is INTEGER range 1 .. 4;
type SEGMENT_TYPE is new INTEGER range 0..255;
type OFFSET_TYPE is new INTEGER range 0..32767;
type ADDRESS is record
SEGMENT : SEGMENT_TYPE := SEGMENT_TYPE'LAST;
OFFSET : OFFSET_TYPE := OFFSET_TYPE'LAST;
end record;
SYSTEM_ERROR : exception;
end SYSTEM;
package IO_EXCEPTIONS is
STATUS_ERROR : exception;
MODE_ERROR : exception;
NAME_ERROR : exception;
USE_ERROR : exception;
DEVICE_ERROR : exception;
END_ERROR : exception;
DATA_ERROR : exception;
LAYOUT_ERROR : exception;
end IO_EXCEPTIONS;
pragma page;
with IO_EXCEPTIONS;
generic
type ELEMENT_TYPE is private;
package SEQUENTIAL_IO is
type FILE_TYPE is limited private;
type FILE_MODE is (IN_FILE, OUT_FILE);
-- File management
procedure CREATE (FILE : in out FILE_TYPE;
MODE : in FILE_MODE := OUT_FILE;
NAME : in STRING := "";
FORM : in STRING := "");
pragma IO_interface(CREATE,SIO_CREATE,ELEMENT_TYPE);
procedure OPEN (FILE : in out FILE_TYPE;
MODE : in FILE_MODE;
NAME : in STRING;
FORM : in STRING := "");
pragma IO_interface(OPEN,SIO_OPEN,ELEMENT_TYPE);
procedure CLOSE (FILE : in out FILE_TYPE);
pragma IO_interface(CLOSE,SIO_CLOSE);
procedure DELETE (FILE : in out FILE_TYPE);
pragma IO_interface(DELETE,SIO_DELETE);
procedure RESET (FILE : in out FILE_TYPE; MODE : in FILE_MODE);
pragma IO_interface(RESET,SIO_RESET_MODE,ELEMENT_TYPE);
procedure RESET (FILE : in out FILE_TYPE);
pragma IO_interface(RESET,SIO_RESET,ELEMENT_TYPE);
function MODE (FILE : in FILE_TYPE) return FILE_MODE;
pragma IO_interface(MODE,SIO_MODE);
function NAME (FILE : in FILE_TYPE) return STRING;
pragma IO_interface(NAME,SIO_NAME);
function FORM (FILE : in FILE_TYPE) return STRING;
pragma IO_interface(FORM,SIO_FORM);
function IS_OPEN (FILE : in FILE_TYPE) return BOOLEAN;
pragma IO_interface(IS_OPEN,SIO_IS_OPEN);
-- Input and Output Operations:
procedure READ (FILE : in FILE_TYPE; ITEM : out ELEMENT_TYPE);
pragma IO_interface(READ,SIO_READ,ELEMENT_TYPE);
procedure WRITE (FILE : in FILE_TYPE; ITEM : in ELEMENT_TYPE);
pragma IO_interface(WRITE,SIO_WRITE,ELEMENT_TYPE);
function END_OF_FILE(FILE : in FILE_TYPE) return BOOLEAN;
pragma IO_interface(END_OF_FILE,SIO_END_OF_FILE);
-- Exceptions:
STATUS_ERROR : exception renames IO_EXCEPTIONS.STATUS_ERROR;
MODE_ERROR : exception renames IO_EXCEPTIONS.MODE_ERROR;
NAME_ERROR : exception renames IO_EXCEPTIONS.NAME_ERROR;
USE_ERROR : exception renames IO_EXCEPTIONS.USE_ERROR;
DEVICE_ERROR : exception renames IO_EXCEPTIONS.DEVICE_ERROR;
END_ERROR : exception renames IO_EXCEPTIONS.END_ERROR;
DATA_ERROR : exception renames IO_EXCEPTIONS.DATA_ERROR;
private
UNINITIALIZED: constant := 0;
type FILE_TYPE is record
FILENUM: INTEGER := UNINITIALIZED;
end record;
end SEQUENTIAL_IO;
package body SEQUENTIAL_IO is
end SEQUENTIAL_IO;
pragma page;
with IO_EXCEPTIONS;
generic
type ELEMENT_TYPE is private;
package DIRECT_IO is
type FILE_TYPE is limited private;
type FILE_MODE is (IN_FILE, INOUT_FILE, OUT_FILE);
type COUNT is range 0 .. INTEGER'LAST;
subtype POSITIVE_COUNT is COUNT range 1 .. COUNT'LAST;
-- File management
procedure CREATE (FILE : in out FILE_TYPE;
MODE : in FILE_MODE := INOUT_FILE;
NAME : in STRING := "";
FORM : in STRING := "");
pragma IO_interface(CREATE,DIO_CREATE,ELEMENT_TYPE);
procedure OPEN (FILE : in out FILE_TYPE;
MODE : in FILE_MODE;
NAME : in STRING;
FORM : in STRING := "");
pragma IO_interface(OPEN,DIO_OPEN,ELEMENT_TYPE);
procedure CLOSE (FILE : in out FILE_TYPE);
pragma IO_interface(CLOSE,DIO_CLOSE);
procedure DELETE (FILE : in out FILE_TYPE);
pragma IO_interface(DELETE,DIO_DELETE);
procedure RESET (FILE : in out FILE_TYPE; MODE : in FILE_MODE);
pragma IO_interface(RESET,DIO_RESET_MODE,ELEMENT_TYPE);
procedure RESET (FILE : in out FILE_TYPE);
pragma IO_interface(RESET,DIO_RESET,ELEMENT_TYPE);
function MODE (FILE : in FILE_TYPE) return FILE_MODE;
pragma IO_interface(MODE,DIO_MODE);
function NAME (FILE : in FILE_TYPE) return STRING;
pragma IO_interface(NAME,DIO_NAME);
function FORM (FILE : in FILE_TYPE) return STRING;
pragma IO_interface(FORM,DIO_FORM);
function IS_OPEN (FILE : in FILE_TYPE) return BOOLEAN;
pragma IO_interface(IS_OPEN,DIO_IS_OPEN);
-- Input and Output Operations:
procedure READ (FILE : in FILE_TYPE; ITEM : out ELEMENT_TYPE);
pragma IO_interface(READ,DIO_READ,ELEMENT_TYPE);
procedure READ (FILE : in FILE_TYPE; ITEM : out ELEMENT_TYPE;
FROM : in POSITIVE_COUNT);
pragma IO_interface(READ,DIO_READ_FROM,ELEMENT_TYPE);
procedure WRITE (FILE : in FILE_TYPE; ITEM : in ELEMENT_TYPE);
pragma IO_interface(WRITE,DIO_WRITE,ELEMENT_TYPE);
procedure WRITE (FILE : in FILE_TYPE; ITEM : in ELEMENT_TYPE;
TO : in POSITIVE_COUNT);
pragma IO_interface(WRITE,DIO_WRITE_TO,ELEMENT_TYPE);
procedure SET_INDEX(FILE : in FILE_TYPE; TO :in POSITIVE_COUNT);
pragma IO_interface(SET_INDEX,DIO_SET_INDEX);
function INDEX (FILE : in FILE_TYPE) return POSITIVE_COUNT;
pragma IO_interface(INDEX,DIO_INDEX);
function SIZE (FILE : in FILE_TYPE) return COUNT;
pragma IO_interface(SIZE,DIO_SIZE);
function END_OF_FILE(FILE : in FILE_TYPE) return BOOLEAN;
pragma IO_interface(END_OF_FILE,DIO_END_OF_FILE);
-- Exceptions:
STATUS_ERROR : exception renames I